//https://blog.csdn.net/LLL_liuhui/article/details/80361928
var _columns_action

//獲取動態組列
$.ajax({
    url: "/entity_eva_wbal_test/selectColumn",
    type: 'get',
    dataType: 'json',
    async: false,
    cache:false,
    contentType: "application/json; charset=utf-8",
    success: function (data) {
        _columns_action = data;
//           console.log(_columns_action)
    }
});

//獲取組中列數
function get_columns_num(fa_level) {
	var num;
	$.ajax({
	    type: "get",
	    url: "/meta_eva_wbal_test/selectColumnNumByFaLevel",
	    dataType: 'json',
	    async: false,
	    contentType: "application/json; charset=utf-8",
	    data: {"faLevel": fa_level},
	    success: function (data) {
	        if (data['status'] == "success") {
	        	num = data['data'];
	        } else {
	            bootoast({
	                message: '删除失败\n' + data['msg'],
	                position: 'top',
	                type: 'danger',
	                timeout: 1.5,
	            });
	        }
	    }
	});
	return num;
}

var _columns =[
		[
			{checkbox: true, colspan: 1, rowspan: 3},
			{title: '序号', field: 'ID', align: 'center',	 valign: 'middle',	colspan: 1, rowspan: 3},
			{title: '序号', field: 'showId', align: 'center',	 valign: 'middle',	colspan: 1, rowspan: 3,
				formatter:function(value,row,index){
					return index+1;
			}},
			{title: '时间',field: 'CREATED_AT', align: 'center', valign: 'middle', colspan: 1, rowspan: 3},
			{title: '日期',field: 'DATE', align: 'center', valign: 'middle', colspan: 1, visible: false,rowspan: 3,
				formatter:function(value,row,index){
	    		return (row.CREATED_AT).substring(0,10);
	    	}},
//			{title: '工序或设备名称',field: 'PROGRAM_NAME', align: 'center', valign: 'middle', colspan: 1, rowspan: 3},
            {title: '用水单元',field: 'PROGRAM_NAME', align: 'center', valign: 'middle', colspan: 1, rowspan: 3},
			{title: '输入水量', field: '', align: 'center',	 valign: 'middle', colspan: 3, rowspan: 1},
			{title: '输出水量', field: '', align: 'center',	 valign: 'middle',	colspan: 5, rowspan: 1},
			
		],
		[
			{title: '新水量',	field: '',	align: 'center',	valign: 'middle',	colspan: 1,	rowspan: 1},
			{title: '循环水量(入)', field: '',	align: 'center',	valign: 'middle',	colspan: 1,	rowspan: 1},
			{title: '串联水量(入)', field: '',	align: 'center',	valign: 'middle',	colspan: 1,	rowspan: 1},
			{title: '循环水量(出)', field: '',	align: 'center',	valign: 'middle',	colspan: 1,	rowspan: 1},
			{title: '串联水量(出)', field: '',	align: 'center',	valign: 'middle',	colspan: 1,	rowspan: 1},
			{title: '排水量',	field: 'DRAINAGE_VOLUME',	align: 'center',	valign: 'middle',	colspan: 1,	rowspan: 2},
			{title: '漏失水量', field: 'LOSS_WATER_VOLUME',	align: 'center',	valign: 'middle',	colspan: 1,	rowspan: 2},
			{title: '耗水量',	field: 'WATER_CONSUMPTION',	align: 'center',	valign: 'middle',	colspan: 1,	rowspan: 2}
		],
		[
			
		]
	]

//組裝動態列
$(function () {
	//修改动态列的宽度
	_columns[1][0]['colspan'] = get_columns_num(1);
	_columns[1][1]['colspan'] = get_columns_num(2);
	_columns[1][2]['colspan'] = get_columns_num(3);
	_columns[1][3]['colspan'] = get_columns_num(4);
	_columns[1][4]['colspan'] = get_columns_num(5);
	_columns[0][6]['colspan'] = _columns[1][0]['colspan']+_columns[1][1]['colspan']+_columns[1][2]['colspan'];//输入水量 
	_columns[0][7]['colspan'] = _columns[1][3]['colspan']+_columns[1][4]['colspan']+3;//输出水量 
	
//	//添加子項
	var num = _columns[0][6]['colspan'] +_columns[0][7]['colspan']-3;
	for(var i = 0; i < num ; i++) {
		var _column = [];
		_column['title'] = _columns_action[i].title;
		_column['field'] = _columns_action[i].field;
		_column['align'] = "center";
		_column['valign'] = "middle";
		_column['colspan'] = 1;
		_column['rowspan'] = 1;
		_columns[2].push(_column);
	}
	//修改表头,删除无列组名
	update_table_head();
});

var TableInit = function () {
    var oTableInit = new Object();
    //初始化Table
    oTableInit.Init = function () {
        $('#data_table').bootstrapTable({
            url: '/entity_eva_wbal_test/select',         //请求后台的URL（*）
            method: 'get',                      //请求方式（*）
            toolbar: '#toolbar',                //工具按钮,用哪个容器
            cache: false,                       //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
            pagination: false,                   //是否显示分页（*）
            queryParams: oTableInit.queryParams,//传递参数（*）
            sidePagination: "client",           //分页方式：client客户端分页，server服务端分页（*）
            pageNumber: 1,                       //初始化加载第一页，默认第一页
            pageSize: 10,                       //每页的记录行数（*）
            pageList: [10, 25, 50, 100],        //可供选择的每页的行数（*）
            showColumns: false,                  //是否显示所有的列
            showRefresh: true,                  //是否显示刷新按钮
            clickToSelect: true,                //是否启用点击选中行
            uniqueId: "id",                     //每一行的唯一标识，一般为主键列
            columns: _columns,
            onLoadSuccess: function(data){
            	add_table_foot();//添加表尾
            	update_table_foot();//修改表尾
            },
          //导出
            showExport: true,                     //是否显示导出按钮
            exportTypes:['csv', 'doc', 'excel'], //['csv', 'txt', 'sql', 'doc', 'excel', 'xlsx', 'pdf'],           //导出文件类型
            exportDataType: "basic",             //basic当前页', 'all所有, 'selected'.
            exportOptions: {
                fileName: '用水单元水平衡测试表数据管理',  //文件名称设置
                excelstyles: ['background-color', 'color', 'font-size', 'font-weight']
            },
        });
    };

    //得到查询的参数
    oTableInit.queryParams = function (params) {
        var temp = {   //这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
            limit: params.limit,   //页面大小
            offset: params.offset,  //页码
            label_id: label_entity_water_bala_companyID,
        };
        return temp;
    };
    return oTableInit;
};

var ButtonInit = function () {
    var oInit = new Object();

    oInit.Init = function () {
        //初始化页面上面的按钮事件
        //新增按钮
        $("#btn_add").click(function () {
        	// 跳过 checkbox 和 id
        	$('#new_data_body').empty();
        	$('#new_data_body').append(create_column(_columns[0][4].title, 'new' + _columns[0][4].field, ''));//日期
        	$('#new_data_body').append(create_column(_columns[0][5].title, 'fnew' + _columns[0][5].field, ''));//设备或工程名称
        	for (var i = 0; i < _columns_action.length; i++)
                $('#new_data_body').append(create_column(_columns_action[i].title, 'vnew' + _columns_action[i].field, ''));
        	$('#new_data_body').append(create_column(_columns[1][findout_column(_columns, 1, 'title', '排水量')].title, 'fnew' + _columns[1][findout_column(_columns, 1, 'title', '排水量')].field, ''));//排水量
        	$('#new_data_body').append(create_column(_columns[1][findout_column(_columns, 1, 'title', '漏失水量')].title, 'fnew' + _columns[1][findout_column(_columns, 1, 'title', '漏失水量')].field, ''));//漏失水量
        	$('#new_data_body').append(create_column(_columns[1][findout_column(_columns, 1, 'title', '耗水量')].title, 'fnew' + _columns[1][findout_column(_columns, 1, 'title', '耗水量')].field, ''));//耗水量
            $('#new_data').modal();
            $('#newDATE').val(getdate());
            $('#newDATE').datetimepicker({
        		minView: "month", //选择日期后，不会再跳转去选择时分秒 
        	    language:  'zh-CN',
        	    format: 'yyyy-mm-dd',
        	    todayBtn:  true,//今日按钮
                autoclose: true,  //当选择一个日期之后是否立即关闭此日期时间选择器。
        	    endDate: new Date(), //结束日期为当前日期
            });
        });
        
        //编辑按钮
        $("#btn_edit").click(function () {
            var arrselections = $("#data_table").bootstrapTable('getSelections');
            if (arrselections.length > 1) {
                bootoast({
                    message: '只能选择一行进行编辑',
                    position: 'top',
                    type: 'warning',
                    timeout: 1.5,
                });
                return;
            }
            if (arrselections.length <= 0) {
                bootoast({
                    message: '请选择有效数据',
                    position: 'top',
                    type: 'warning',
                    timeout: 1.5,
                });
                return;
            }
            $('#edit_data_body').empty();
            $('#edit_data_body').append(create_column(_columns[0][4].title, 'edit' + _columns[0][4].field, (arrselections[0][_columns[0][3].field]).substring(0,10)));//日期
            $('#edit_data_body').append(create_column(_columns[0][5].title, 'fedit' + _columns[0][5].field, arrselections[0][_columns[0][5].field]));//工程或设备名称
            for (var i = 0; i < _columns_action.length; i++)
                $('#edit_data_body').append(create_column(_columns_action[i].title, 'vedit' + _columns_action[i].field, arrselections[0][_columns_action[i].field]));
            $('#edit_data_body').append(create_column(_columns[1][findout_column(_columns, 1, 'title', '排水量')].title, 'fedit' + _columns[1][findout_column(_columns, 1, 'title', '排水量')].field, arrselections[0][_columns[1][findout_column(_columns, 1, 'title', '排水量')].field]));//排水量
        	$('#edit_data_body').append(create_column(_columns[1][findout_column(_columns, 1, 'title', '漏失水量')].title, 'fedit' + _columns[1][findout_column(_columns, 1, 'title', '漏失水量')].field, arrselections[0][_columns[1][findout_column(_columns, 1, 'title', '漏失水量')].field]));//漏失水量
        	$('#edit_data_body').append(create_column(_columns[1][findout_column(_columns, 1, 'title', '耗水量')].title, 'fedit' + _columns[1][findout_column(_columns, 1, 'title', '耗水量')].field, arrselections[0][_columns[1][findout_column(_columns, 1, 'title', '耗水量')].field]));//耗水量
            $('#edit_data').modal();
            $('#editDATE').val();
            $('#editDATE').datetimepicker({
        		minView: "month", //选择日期后，不会再跳转去选择时分秒 
        	    language:  'zh-CN',
        	    format: 'yyyy-mm-dd',
        	    todayBtn:  true,//今日按钮
                autoclose: true,  //当选择一个日期之后是否立即关闭此日期时间选择器。
        	    endDate: new Date(), //结束日期为当前日期
            });
        });

        // 删除按钮
        $("#btn_delete").click(function () {
            var arrselections = $("#data_table").bootstrapTable('getSelections');
            if (arrselections.length <= 0) {
                bootoast({
                    message: '请选择有效数据',
                    position: 'top',
                    type: 'warning',
                    timeout: 1.5,
                });
                return;
            }

            values=[];
            for(var i=0;i<arrselections.length;i++)
                values.push(arrselections[i].ID);
            
            bootbox.confirm({
                message: "确认要删除选择的数据吗？",
                locale: 'zh_CN',
                title: '操作提示',
                callback: function (result) {
                    if (result) {
                        $.ajax({
                            type: "post",
                            url: "/entity_eva_wbal_test/delete",
                            data: JSON.stringify(values),
                            contentType: "application/json",
                            success: function (data) {
                                if (data['status'] == "success") {
                                    bootoast({
                                        message: '删除成功',
                                        position: 'top',
                                        type: 'success',
                                        timeout: 1.5,
                                    });
                                    $("#data_table").bootstrapTable('refresh');
                                } else {
                                    bootoast({
                                        message: '删除失败\n' + data['msg'],
                                        position: 'top',
                                        type: 'danger',
                                        timeout: 1.5,
                                    });
                                }
                            }
                        });
                    }
                }
            })

        });


        //新增框内的提交
        $('#new_data_submit').on('click', function () {
        	var values = []
        	values.push($('#new' + _columns[0][4].field).val());//日期
        	if(fieldIsEmpty($('#new' + _columns[0][5].field).val(),'工程或设备名称不能为空',''))
        		return false;
        	values.push($('#new' + _columns[0][5].field).val());//工程或设备名称
        	var i = 0;
        	for (i = 0; i < _columns_action.length; i++){
        		if(!isEmpty($('#new' + _columns_action[i].field).val()) && (!fieldIsNumber($('#new' + _columns_action[i].field).val(),'',_columns_action[i].title+'应为整数或者小数') ||
            			!fieldIsDecimalTrue($('#new' + _columns_action[i].field).val(),'NUMBER(20,5)','',_columns_action[i].title + '格式不对，请输入小数')))
        			return false;
        		values.push($('#new' + _columns_action[i].field).val());
        	}
        	if(fieldIsEmpty($('#new' + _columns[1][findout_column(_columns, 1, 'title', '排水量')].field).val(),'排水量不能为空','') ||
        			!fieldIsNumber($('#new' + _columns[1][findout_column(_columns, 1, 'title', '排水量')].field).val(),'','排水量应为整数或者小数') ||
        			!fieldIsDecimalTrue($('#new' + _columns[1][findout_column(_columns, 1, 'title', '排水量')].field).val(),'NUMBER(20,5)','','排水量格式不对，请输入小数'))
        		return false;
        	values.push($('#new' + _columns[1][findout_column(_columns, 1, 'title', '排水量')].field).val());//排水量
        	
        	if(fieldIsEmpty($('#new' + _columns[1][findout_column(_columns, 1, 'title', '漏失水量')].field).val(),'漏失水量不能为空','') ||
        			!fieldIsNumber($('#new' + _columns[1][findout_column(_columns, 1, 'title', '漏失水量')].field).val(),'','漏失水量应为整数或者小数') ||
        			!fieldIsDecimalTrue($('#new' + _columns[1][findout_column(_columns, 1, 'title', '漏失水量')].field).val(),'NUMBER(20,5)','','漏失水量格式不对，请输入小数'))
        		return false;
        	values.push($('#new' + _columns[1][findout_column(_columns, 1, 'title', '漏失水量')].field).val());//漏失水量
        	
        	if(fieldIsEmpty($('#new' + _columns[1][findout_column(_columns, 1, 'title', '耗水量')].field).val(),'耗水量不能为空','') ||
        			!fieldIsNumber($('#new' + _columns[1][findout_column(_columns, 1, 'title', '耗水量')].field).val(),'','耗水量应为整数或者小数') ||
        			!fieldIsDecimalTrue($('#new' + _columns[1][findout_column(_columns, 1, 'title', '耗水量')].field).val(),'NUMBER(20,5)','','耗水量格式不对，请输入小数'))
        		return false;
        	values.push($('#new' + _columns[1][findout_column(_columns, 1, 'title', '耗水量')].field).val());//耗水量
            values.push(label_entity_water_bala_companyID);
            $.ajax({
            	type: "post",
                url: "/entity_eva_wbal_test/insert",
                data: JSON.stringify(values),
                contentType: "application/json",
                success: function (data) {
                    if (data['status'] == "success") {
                        bootoast({
                            message: '插入成功',
                            position: 'top',
                            type: 'success',
                            timeout: 2,
                        });
                        $("#new_data").modal('hide');
                        $("#data_table").bootstrapTable('refresh');
                    } else {
                        bootoast({
                            message: '插入失败\n' + data['msg'],
                            position: 'top',
                            type: 'danger',
                            timeout: 2,
                        });
                    }
                },
                error: function () {
                    bootoast({
                        message: '通讯异常',
                        position: 'top',
                        type: 'danger',
                        timeout: 1.5,
                    });
                }
            });
        })

    };
    
    //编辑框内的提交
    $('#edit_data_submit').click(function () {
        var values = []
        var id = $("#data_table").bootstrapTable('getSelections')[0]['ID'];        
        values.push(id);
        values.push($('#edit' + _columns[0][4].field).val());//日期
        if(fieldIsEmpty($('#edit' + _columns[0][5].field).val(),'工程或设备名称不能为空'))
    		return false;
        values.push($('#edit' + _columns[0][5].field).val());//工程或设备名称
        
    	for (var i = 0; i < _columns_action.length; i++){
    		if(!isEmpty($('#edit' + _columns_action[i].field).val()) &&
        			(!fieldIsNumber($('#edit' + _columns_action[i].field).val(),'',_columns_action[i].title +'应为整数或者小数') ||
        			!fieldIsDecimalTrue($('#edit' + _columns_action[i].field).val(),'NUMBER(20,5)','',_columns_action[i].title + '格式不对，请输入小数')))
    			return false;
    		values.push($('#edit' + _columns_action[i].field).val());
    	}
    	
    	if(fieldIsEmpty($('#edit' + _columns[1][findout_column(_columns, 1, 'title', '排水量')].field).val(),'排水量不能为空','') ||
    			!fieldIsNumber($('#edit' + _columns[1][findout_column(_columns, 1, 'title', '排水量')].field).val(),'','排水量应为整数或者小数') ||
    			!fieldIsDecimalTrue($('#edit' + _columns[1][findout_column(_columns, 1, 'title', '排水量')].field).val(),'NUMBER(20,5)','','排水量格式不对，请输入小数'))
    		return false;
    	values.push($('#edit' + _columns[1][findout_column(_columns, 1, 'title', '排水量')].field).val());//排水量
    	
    	if(fieldIsEmpty($('#edit' + _columns[1][findout_column(_columns, 1, 'title', '漏失水量')].field).val(),'漏失水量不能为空','') ||
    			!fieldIsNumber($('#edit' + _columns[1][findout_column(_columns, 1, 'title', '漏失水量')].field).val(),'','漏失水量应为整数或者小数') ||
    			!fieldIsDecimalTrue($('#edit' + _columns[1][findout_column(_columns, 1, 'title', '漏失水量')].field).val(),'NUMBER(20,5)','','漏失水量格式不对，请输入小数'))
    		return false;
    	values.push($('#edit' + _columns[1][findout_column(_columns, 1, 'title', '漏失水量')].field).val());//漏失水量
    	
    	if(fieldIsEmpty($('#edit' + _columns[1][findout_column(_columns, 1, 'title', '耗水量')].field).val(),'耗水量不能为空','') ||
    			!fieldIsNumber($('#edit' + _columns[1][findout_column(_columns, 1, 'title', '耗水量')].field).val(),'','耗水量应为整数或者小数') ||
    			!fieldIsDecimalTrue($('#edit' + _columns[1][findout_column(_columns, 1, 'title', '耗水量')].field).val(),'NUMBER(20,5)','','耗水量格式不对，请输入小数'))
    		return false;
    	values.push($('#edit' + _columns[1][findout_column(_columns, 1, 'title', '耗水量')].field).val());//耗水量
    		
        $.ajax({
            type: "post",
            url: "/entity_eva_wbal_test/update",
            data: JSON.stringify(values),
            contentType: "application/json",
            success: function (data) {
                if (data['status'] == "success") {
                    bootoast({
                        message: '修改成功',
                        position: 'top',
                        type: 'success',
                        timeout: 2,
                    });
                    $("#edit_data").modal('hide');
                    $("#data_table").bootstrapTable('refresh');
                } else {
                    bootoast({
                        message: '修改失败\n' + data['msg'],
                        position: 'top',
                        type: 'danger',
                        timeout: 2,
                    });
                }
            },
            error: function () {
                bootoast({
                    message: '通讯异常',
                    position: 'top',
                    type: 'danger',
                    timeout: 1.5,
                });
            }
        });
    });

    return oInit;
};

$(function () {
    //1.初始化Table
    var oTable = new TableInit();
    oTable.Init();

    //2.初始化Button的点击事件
    var oButtonInit = new ButtonInit();
    oButtonInit.Init();
    //3.隐藏列
    $('#data_table').bootstrapTable('hideColumn', 'CREATED_AT');
    $('#data_table').bootstrapTable('hideColumn', 'ID');
});

//組裝添加動態框
function create_column(csName, enName, value) {
    if (typeof(value) == "undefined")
        value = '';
    var result = '';
    if (enName.substring(enName.length-4) == "DATE"){//时间属性不可写
    	result += '<div class="form-group"><label>' + csName + '</label><input class="form-control" id="' + enName + '" value="' + value + '" readonly="readonly"></div>';
    }
    else if(enName.substr(0,1)=='f'){
		result = '<div class="form-group"><label>' + csName + '</label><input class="form-control" id="' + enName.substr(1) + '" value="' + value + '" placeholder="必填" ></div>';
	}else if(enName.substr(0,1)=='v'){
		result = '<div class="form-group"><label>' + csName + '</label><input class="form-control" id="' + enName.substr(1) + '" value="' + value + '" placeholder="选填" ></div>';
	}else{}
    return result;
}

//获取当前时期 yyyy-mm-dd
function getdate() {
	var date = new Date();
	var mon = date.getMonth()  + 1;         //getMonth()返回的是0-11，则需要加1
	if(mon <=9){                                     //如果小于9的话，则需要加上0
	mon = "0" + mon;
	}
	var day = date.getDate();                   //getdate()返回的是1-31，则不需要加1
	if(day <=9){                                     //如果小于9的话，则需要加上0
	day = "0" + day;
	}
	var date_info = date.getFullYear() + "-" + mon + "-" +  day;
	return date_info;
}
//添加表尾
function add_table_foot() {
	$('#entity_eva_tfoot').remove();
	$('#data_table').append('<tfoot id="entity_eva_tfoot">\
			<tr>\
				<th class="bs-checkbox" style="width: 36px; " data-field="0"><div></div><div/></th>\
                <td id="note" colspan="6">注：新水量、循环水量以及串联水量的空格项依据各用水单元情况填写，表中填项供参照。 </td >\
            </tr>\
		</tfoot>\
			');
}
//修改表尾宽度
function update_table_foot(){	
	var num = get_columns_num(1)+get_columns_num(2)+get_columns_num(3)+get_columns_num(4)+get_columns_num(5)+6;
	$('#note').attr('colspan',num);
}
/**
 * 查找dataset[location]一维数组中是否存在属性attributes的数值为meg
 * @param dataset 数据集（二位数组）
 * @param location 一维坐标
 * @param attributes 属性
 * @param meg 属性数值
 * @returns 成功，返回对应的二位下坐标；失败，返回-1
 */
function findout_column(dataset, location, attributes, meg){
	var i = 0;
	for(i = 0; i < dataset[location].length; i++){
		if(dataset[location][i][attributes] == meg){
			return i;
		}
	}
	return -1;
}
/**
 * 修改表头
 * @returns
 */
function update_table_head(){
	var num1 = get_columns_num(1)
	var num2 = get_columns_num(2)
	var num3 = get_columns_num(3)
	var num4 = get_columns_num(4)
	var num5 = get_columns_num(5)
	
	//删除小组名	
	if(num1 == 0){
		var i = findout_column(_columns, 1, 'title', '新水量');
		if(i != -1){
			_columns[1].splice(i,1);//删除
		}
	}
	if(num2 == 0){
		var i = findout_column(_columns, 1, 'title', '循环水量(入)');
		if(i != -1){
			_columns[1].splice(i,1);//删除
		}
	}
	if(num3 == 0){
		var i = findout_column(_columns, 1, 'title', '串联水量(入)');
		if(i != -1){
			_columns[1].splice(i,1);//删除
		}
	}
	if(num4 == 0){
		var i = findout_column(_columns, 1, 'title', '循环水量(出)');
		if(i != -1){
			_columns[1].splice(i,1);//删除
		}
	}
	if(num5 == 0){
		var i = findout_column(_columns, 1, 'title', '串联水量(出)');
		if(i != -1){
			_columns[1].splice(i,1);//删除
		}
	}
	//删除大组号
	if((num1+num2+num3) == 0){
		var i = findout_column(_columns, 0, 'title', '输入水量');
		if(i != -1){
			_columns[0].splice(i,1);//删除
		}
	}
}
//返回上级页面
$("#btn_return").click(function () {
    label_water_bala_companyId=label_entity_water_bala_companyID;
    $('#page-wrapper').load('pages/label_entity_water_bala.html');
});
